/*
2021-7-17
https://www.acwing.com/problem/content/3775/
*/
#include<iostream>
#include<cstring>
#include<algorithm>

using namespace std;
const int N=2e5+5;
int h[N],ne[N],e[N],idx,dist[N];
int p[N];
int cnt[N];
int n,m;
int q[N];

void add(int a,int b)
{
    e[idx]=b,ne[idx]=h[a],h[a]=idx++;
}

void bfs(int x)
{
    int hh=0,tt=0;
    memset(dist,0x3f,sizeof dist);
    dist[x]=0;
    q[hh]=x;
    while(hh<=tt)
    {
        int t=q[hh++];
        for(int i=h[t];~i;i=ne[i])
        {
            int j=e[i];
            if(dist[j]>dist[t]+1)
            {
                cnt[j]=1;
                dist[j]=dist[t]+1;
                q[++tt]=j;
            }
            else if(dist[j]==dist[t]+1)
                cnt[j]++;
        }
    }
    
}

int main()
{
    cin>>n>>m;
    memset(h,-1,sizeof h);
    
    while(m--)
    {
        int u,v;
        cin>>u>>v;
        add(v,u);
    }
    
    int k;
    cin>>k;
    for(int i=1;i<=k;i++)
        cin>>p[i];
    
    bfs(p[k]);
    
    int cnt1=0,cnt2=0;
    for(int i=1;i<k;i++)
    {
        int a=p[i],b=p[i+1];
        if(dist[a]<dist[b]+1) cnt1++,cnt2++;
        else if(cnt[a]>1) cnt2++;
    }
    
    cout<<cnt1<<' '<<cnt2<<endl;
    
    return 0;
} 
